// 本文件是存储 用户相关的信息

import { defineStore } from 'pinia'
// 导入用户接口函数
import { getUserInfoApi, loginApi } from '@/api/user'
// 导入本地存储
import { getToken, removeToken, setToken } from '@/utils/token'
export const useUserStore = defineStore('user', {
  state: () => ({
    token: getToken() || '',
    userInfo: {}
  }),

  actions: {
    // 设置 Token
    setToken(token) {
      // 在 pinia 设置 token
      this.token = token
      // 在本地存储中保存
      setToken(token)
    },

    // 登录
    async loginAction(loginForm) {
      const resp = await loginApi(loginForm)
      const { token } = resp
      // 保存 token
      this.setToken(token)
    },

    // 设置用户信息
    setUserInfo(userInfo) {
      this.userInfo = userInfo
    },

    // 获取用户信息
    async getUserInfoAction() {
      // 拦截 token 过期出错问题
      try {
        const resp = await getUserInfoApi()
        // 设置用户信息
        this.setUserInfo(resp)
      } catch (e) { }
    },

    // 登出
    logout() {
      // 将 pinia 用户信息置空 
      this.token = ''
      this.userInfo = {}
      // 将本地存储置空
      removeToken()
    }
  },
})